﻿using System;
using System.Collections.Generic;
using System.Text;

namespace AMS.DataAccess.Sql
{
    /// <summary>
    /// 表示一个 SQL 表达式
    /// </summary>
    public class SqlStatement
    {
        /// <summary>
        /// 输出转换后的SQL语句
        /// </summary>
        /// <returns>转换后的SQL语句</returns>
        public override string ToString()
        {
            return string.Empty;
        }

        /// <summary>
        /// 获取或设置一个值，是否保留 string.Empty。默认不保留，也就是 string.Empty 被处理成 NULL
        /// </summary>
        public bool KeepEmptyString { get; set; }

        /// <summary>
        /// 获取或设置一个值，表示是否紧凑模式。如果是紧凑模式，则尽量将SQL语句构造在一行以内。
        /// </summary>
        /// <remarks>
        /// CompactMode赋值的时机根据子类的实现不同，一般需要在创建对象以后立即赋值
        /// </remarks>
        public virtual bool CompactMode { get; set; }

        /// <summary>
        /// 根据是否紧凑模式处理是否在最后添加换行符
        /// </summary>
        protected void NL(StringBuilder sb)
        {
            if (!CompactMode)
            {
                sb.AppendLine();
            }
        }
    }
}
